/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tlp.ucsur.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import tlp.ucsur.beans.LocalBean;
import tlp.ucsur.conexion.DBConnection;
import java.util.ArrayList;
import java.util.List;
import tlp.ucsur.beans.UsuarioBean;

/**
 *
 * @author Administrador
 */
public class MySqlLocalDAOImpl implements LocalDAO {

  @Override
  public LocalBean getLocal(int codigoLocal) {
    String sql = "select * from local where idlocal=?";
    try {
      Connection conn = DBConnection.getConnection();
      PreparedStatement ps = conn.prepareStatement(sql);
      ps.setInt(1, codigoLocal);
      ResultSet rs = ps.executeQuery(sql);
      if (rs.next()) {
        LocalBean local = new LocalBean();
        UsuarioBean usuario = new UsuarioBean();
        local.setCodigoLocal(rs.getInt("idlocal"));
        local.setNombreLocal(rs.getString("nombreLocal"));
        local.setDireccionLocal(rs.getString("direccionLocal"));
        usuario.setCodigoUsuario(rs.getString("codUsuario"));
        local.setEncargado(usuario);
        local.setDireccionLocal(rs.getString("direccionLocal"));
        local.setTelefonoLocal(rs.getString("telefonoLocal"));
        return local;
      }
      rs.close();
      ps.close();
      conn.close();

    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }

  @Override
  public List<LocalBean> getListaLocal() {
    String sql = "select * from local";
    List<LocalBean> lista_locales = new ArrayList<LocalBean>();
    try {
      Connection conn = DBConnection.getConnection();
      PreparedStatement ps = conn.prepareStatement(sql);
      ResultSet rs = ps.executeQuery(sql);
      while (rs.next()) {
        LocalBean local = new LocalBean();
        UsuarioBean usuario = new UsuarioBean();
        local.setCodigoLocal(rs.getInt("idlocal"));
        local.setNombreLocal(rs.getString("nombreLocal"));
        local.setDireccionLocal(rs.getString("direccionLocal"));
        usuario.setCodigoUsuario(rs.getString("codUsuario"));
        local.setEncargado(usuario);
        local.setDireccionLocal(rs.getString("direccionLocal"));
        local.setTelefonoLocal(rs.getString("telefonoLocal"));

        lista_locales.add(local);

      }
      rs.close();
      ps.close();
      conn.close();
      return lista_locales;

    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }

  @Override
  public void insertar(LocalBean local) {
    UsuarioBean usuario = new UsuarioBean();
    usuario = local.getEncargado();
    String sql = "insert into local (nombreLocal,direccionLocal,codUsuario,telefonoLocal)values(?,?,?,?)";
    try {
      Connection conn = DBConnection.getConnection();
      PreparedStatement ps = conn.prepareStatement(sql);
      ps.setString(1, local.getNombreLocal());
      ps.setString(2, local.getDireccionLocal());
      ps.setString(3, usuario.getCodigoUsuario());
      ps.setString(4, local.getTelefonoLocal());
      ps.executeUpdate();

      ps.close();
      conn.close();

    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  @Override
  public void eliminar(int codigoLocal) {
    String sql = "delete from local where idlocal=?";
    try {

      Connection conn = DBConnection.getConnection();

      PreparedStatement ps = conn.prepareStatement(sql);
      ps.setInt(1, codigoLocal);
      ps.executeUpdate();

      ps.close();
      conn.close();

    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }

  @Override
  public void actualizar(LocalBean local) {
    UsuarioBean usuario = new UsuarioBean();
    usuario = local.getEncargado();
    String sql = "update local set nombreLocal=?,direccionLocal=?,codUsuario=?,"
            + "telefonoLocal=?";
    try {
      Connection conn = DBConnection.getConnection();
      PreparedStatement ps = conn.prepareStatement(sql);
      ps.setString(1, local.getNombreLocal());
      ps.setString(2, local.getDireccionLocal());
      ps.setString(3, usuario.getCodigoUsuario());
      ps.setString(4, local.getTelefonoLocal());
      ps.executeUpdate();
      ps.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}
